const path = require('path')
const xlsx = require("node-xlsx");
const inquirer = require('inquirer')
// import inquirer from 'inquirer'

const fs = require("fs");
// 导入utils
const {trim} = require('./utils')
// 语言包key值对应的列
const keyColumIndex = 0

const inputPath = './input'
const outputPath = './package'
// const dirCache={};
// 读取input文件夹下的xlsx文件
var files = fs.readdirSync(inputPath);
// console.log(files);
const choices = files.map((item, index) => {
  return {name: item, value: item}
})
inquirer.prompt([
  {
    type: 'list',
    name: 'file',
    message: '选择要翻译的文件',
    default: 'feat',
    loop: false,
    choices: choices
  }
]).then(answers => {

  // 读取xlsx
  const sheets = xlsx.parse(`${inputPath}/${answers.file}`);
  sheets.forEach((sheet, index) => {
    const dirName = sheet.name // 获取sheet名称 作为输出时的文件名称
    if(dirName.indexOf('#') === -1) return;
    const rows = sheet.data // 获取当前sheet的数据
    console.log(`------- 开始转换 ${dirName} -------`)
    // console.log(sheet.data)

    if (!fs.existsSync(`${outputPath}/${dirName}`)) {
      fs.mkdirSync(path.join(__dirname, `package/${dirName}`), { recursive: true });
    } else {
      emptyDir(`${outputPath}/${dirName}`)
    }

    const fileList = []
    rows.forEach((colum, index) => {
      if (index === 0) { // 第一行标题
        colum.forEach(item => {
          // let key = nameMap[item]
          fileList.push({
            fileName: item.split(' ')[1].toLowerCase(),
            data: {}
          })
        })
      } else if (index === 1) { // 第二行是备注 跳过
      } else { // 后面的数据
        colum.forEach((item, index) => {
          const key = colum[keyColumIndex]
          // langFileList[index].data[key] = item
          // try{
          fileList[index].data[trim(key)] = trim(item)
          // }catch(e){
          //     console.log(index)
          // }
        })
      }
    });

    fileList.forEach(file => {
      const name = file.fileName
      const data = file.data
      // 不压缩的情况
      fs.writeFileSync(`${outputPath}/${dirName}/${name}.json`, JSON.stringify(data, null, "\t"), {encoding: 'utf8'});
      // 压缩的情况
      // fs.writeFileSync("./output/json/result.json", JSON.stringify(jsonObj));
      console.log('> 添加 ' + name + '.json 成功');
    })

  })
  console.log('======== 文件转换完成 ========')
})


function emptyDir(path) {
  const files = fs.readdirSync(path);
  files.forEach(file => {
    const filePath = `${path}/${file}`;
    const stats = fs.statSync(filePath);
    if (stats.isDirectory()) {
      emptyDir(filePath);
    } else {
      fs.unlinkSync(filePath);
      // console.log(`> 删除 ${file} 成功`);
    }
  });
}
